package repositories;

import java.util.Collection;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import domain.Event;

@Repository
public interface EventRepository extends JpaRepository<Event, Integer> {

	// Busca los eventos creados por un administrador
	@Query("select a.events from Administrator a where a.id=?1")
	Collection<Event> findEventsByAdministrator(int id);

	// Busca eventos en los que se ha registrado un participante
	@Query("select r.event from Registration r where r.participant.id=?1")
	Collection<Event> findEventsByParticipant(int id);

	// Busca eventos con fecha de inicio mayor a la fecha actual
	@Query("select e from Event e where e.startMoment>CURRENT_DATE")
	Collection<Event> findFutureEvents();

	// Busca eventos con fecha de fin menor a la fecha actual
	@Query("select e from Event e where e.finishMoment<CURRENT_DATE")
	Collection<Event> findPastEvents();

	// Busca eventos en curso (fecha inicio<fecha actual<fecha fin)
	@Query("select e from Event e where e.startMoment<CURRENT_DATE and e.finishMoment>=CURRENT_DATE")
	Collection<Event> findOngoingEvents();

	// Busca eventos en curso creados por un administrador(fecha inicio<fecha
	// actual<fecha fin)
	@Query("select e from Event e where e.startMoment<CURRENT_DATE and e.finishMoment>=CURRENT_DATE and e.administrator.id=?1")
	Collection<Event> findOngoingEventsByAdministrator(int id);
}
